home *** CD-ROM | disk | FTP | other *** search
- /********************************************************************
- FILENAME: KEYBOARD.CPP
- AUTHOR : JAKE HILL
- DATE : 12/1/94
-
- ********************************************************************/
-
- #ifdef __GNUC__
- #include <osbind.h>
- #else
- #include <tos.h>
- #endif
-
- #include <stdio.h>
-
- #include "keyboard.h"
-
- extern void GetView(short *, short *, short *, unsigned short *);
-
- extern short width;
- extern short height;
- extern short scale;
-
- extern short flooropt;
- extern short floorcol;
- extern short nofloor;
- extern short wallopt;
- extern short wallcol;
- extern short singlestep;
- extern short draw_2D;
- extern short tellsect;
- extern short chksect;
-
- void NewInterrupt(void)
- {
- #if 0
- key_flags |= FLAG_UP;
- #endif
- }
-
- void get_key(short *key, short *key_flags)
- {
- char c;
- short x, y, h, a;
-
- #if 1
- if (Cconis())
- c = Cnecin();
- else {
- *key = -1;
- return;
- }
- #endif
-
- #if 0
- c = (char)Cnecin();
- #endif
-
- *key_flags = 0;
- *key = 0;
-
- switch(c) {
- case '8': *key_flags |= FLAG_UP;
- break;
-
- case '2': *key_flags |= FLAG_DOWN;
- break;
-
- case '4': *key_flags |= FLAG_LEFT;
- break;
-
- case '6': *key_flags |= FLAG_RIGHT;
- break;
-
- case '1': *key_flags |= FLAG_SLEFT;
- break;
-
- case '3': *key_flags |= FLAG_SRIGHT;
- break;
-
- case '-': *key = KEY_MINUS;
- break;
-
- case '+': *key = KEY_PLUS;
- break;
- case 27:
- case 'q':
- case 'Q': *key = 1;
- break;
-
- case 'f': floorcol ^= 1;
- break;
-
- case 'F': flooropt ^= 1;
- break;
-
- case 'n': nofloor ^= 1;
- break;
-
- case 'w': wallcol ^= 1;
- break;
-
- case 'W': wallopt ^= 1;
- break;
-
- case 's': singlestep ^= 1;
- break;
-
- case 'l': draw_2D ^= 1;
- break;
-
- case 'c': chksect ^= 1;
- break;
-
- case 't': tellsect ^= 1;
- break;
-
- case '[': width -= 10;
- break;
-
- case ']': width += 10;
- break;
-
- case '{': height -= 10;
- break;
-
- case '}': height += 10;
- break;
-
- case '(': scale -= 1;
- break;
-
- case ')': scale += 1;
- break;
-
- case 'p': GetView(&x, &y, &h, &a);
- printf("(%d,%d) %d %d\n", x, y, h, a);
- break;
- }
- #if 0
- printf("Key:%d Key_flags: %d\n", *key, *key_flags);
- #endif
- }
-
- void ResetKeyboardInt(void)
- {
- #if 0
- if ( key_init )
- _dos_setvect(9, OldInterrupt);
- #endif
- }
-
- void SetKeyboardInt(void)
- {
- #if 0
- atexit( ResetKeyboardInt );
- OldInterrupt = _dos_getvect(9);
- _dos_setvect(9, NewInterrupt);
- key_init = 1;
- #endif
- }
-